#ifndef USERMANAGER_H
#define USERMANAGER_H

#include <QObject>
#include <QList>
#include "user.h"
#include "databasemanager.h"

class UserManager : public QObject
{
    Q_OBJECT

public:
    explicit UserManager(QObject *parent = nullptr);
    ~UserManager();

    // 用户认证
    bool authenticateUser(const QString &username, const QString &password);
    
    // 用户注册
    bool registerUser(const QString &username, const QString &password);
    
    // 用户管理
    bool addUser(const User &user);
    bool removeUser(int userId);
    bool updateUser(const User &user);
    User findUserByUsername(const QString &username);
    User findUserById(int userId);
    QList<User> getAllUsers();
    bool isUsernameExists(const QString &username);
    
    // 权限管理
    bool isAdmin(const QString &username);
    bool canManageUsers(const QString &username);

private:
    DatabaseManager *m_dbManager;
    User m_currentUser;
    
    // 验证用户名格式
    bool validateUsernameFormat(const QString &username);
    
    // 验证密码强度
    bool validatePasswordStrength(const QString &password);
};

#endif // USERMANAGER_H
